import type { IAlertInfo } from './type'
class ToastUtil {
  /**
   * 1:弹窗,能展示取消,确认按钮
   * @param info 弹窗要展示的信息
   * @returns true:点了确认  false:点了取消
   */
  public static alert(info: IAlertInfo): Promise<boolean> {
    return new Promise((resolve) => {
      uni.showModal({
        content: info.title ?? '',
        cancelText: info.cancelButtonText ?? '取消',
        confirmText: info.confirmButtonText ?? '确定',
        complete(res: any) {
          if (res.cancel) {
            resolve(false)
          } else {
            resolve(true)
          }
        },
        showCancel: info.showCancelButton
      })
    })
  }

  /**
   * 2:展示错误信息
   * @param message 要展示的信息
   */
  public static showError(message: string) {
    this.showMessage(message, 'error')
  }

  /**
   * 3:展示成功信息
   * @param message  要展示的信息
   */
  public static showSuccess(message: string) {
    this.showMessage(message, 'success')
  }

  /**
   * 4:展示信息
   * @param message  信息
   * @param type  类型
   */
  public static showMessage(message: string, type: 'error' | 'success') {
    uni.showToast({
      icon: type,
      title: message
    })
  }

  /**
   * 5:展示加载loading
   * @param message  信息
   */
  public static showLoading(message = '请求中....', mask = true) {
    uni.showLoading({
      title: message,
      mask: mask
    })
  }

  /**
   * 6:关闭loading
   */
  public static closeLoading() {
    uni.hideLoading()
  }
}

export { ToastUtil }

export default ToastUtil
